package com.meituan.sdk.model.wmoperNg.food.foodCatUpdate;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 保存更新分组
* This file was automatically generated.
*/
@ApiMeta(
    path = "/wmoper/ng/food/foodCat/update",
    businessId = 16,
    apiVersion = "10052",
    apiName = "food_cat_update",
    needAuth = true
)
public class FoodCatUpdateRequest implements MeituanRequest<String> {
    /**
    * <p data-diff-id="ct-diff-id-398875fc-1084-4bd7-ac4d-46aba13a7177">原始的菜品分类名称，更新时必须</p>
    */
    @SerializedName("categoryNameOrigin")
    private String categoryNameOrigin;
    /**
    * <p data-diff-id="ct-diff-id-a49469cb-675a-4fd6-b974-fef3b1440501">分组描述，默认空。最多255字，空代表不做任何修改。-1代表清空</p>
    */
    @SerializedName("categoryDescription")
    private String categoryDescription;
    /**
    * <p data-diff-id="ct-diff-id-8b0c3c02-a589-472d-8933-5af6a67ce30f">菜品分类排序，数字越小，排名越靠前，新建时必须</p>
    */
    @SerializedName("sequence")
    private Integer sequence;
    /**
    * <p data-diff-id="ct-diff-id-0151275b-e724-49fe-8ed6-f38428b11702">新建的菜品分类名称</p>
    */
    @NotBlank(message = "categoryName不能为空")
    @SerializedName("categoryName")
    private String categoryName;
    /**
    * <p data-diff-id="ct-diff-id-560a7614-e915-426d-9364-33fc997f8137">置顶开关。-1不修改该信息；0 关闭； 1 开启</p>
    */
    @SerializedName("topFlag")
    private Integer topFlag;
    /**
    * <p data-diff-id="ct-diff-id-4fa9f9b4-994f-455e-a6c3-cbc1d87246bd">分组信息。-1：不修改分类信息，0：普通分类；1：必选分类；2：可单独结算分类</p>
    */
    @SerializedName("categoryMode")
    private Integer categoryMode;
    /**
    * <p data-diff-id="ct-diff-id-57866e82-2993-4d7e-9f6a-e8dfc3e57651">置顶时间，默认空。-1代表清空。<font style="font-size:14px;line-height:22px" data-size="14">设置分组置顶时段，每个分组可从每周的周一至周日中选择时间，每天最多支持5个时段，时段之间不能有重合，时间跨度不能超过24h。</font></p>
    */
    @SerializedName("timeZone")
    private String timeZone;
    /**
    * <p data-diff-id="ct-diff-id-2bf274d3-1446-4ced-89ff-d3ba7d1562e0">场域标识，"wmSelfPick": 外卖到店自提</p>
    */
    @NotBlank(message = "marketplaceId不能为空")
    @SerializedName("marketplaceId")
    private String marketplaceId;
    /**
    * <p data-diff-id="ct-diff-id-b3103204-8c72-449a-84e6-2dd5f76e0963">售卖场景，0.在外卖主站和该场域同时售卖，接口不传的商品信息直接复用外卖品。  1.仅在该场域售卖，不会复用外卖商品信息，需要传入完整商品信息。（二期支持）</p>
    */
    @NotNull(message = "sellSceneType不能为空")
    @SerializedName("sellSceneType")
    private Integer sellSceneType;
    /**
    * <p data-diff-id="ct-diff-id-dc60b7f1-5b46-4c69-8949-1a23401c6e6d">场域与外卖主站的商品差异化信息枚举，sellSceneType传0时使用，用于标识当前场域和外卖差异化的信息有哪些，保存场域品时会根据该字段判断要解析哪些信息。  例如：["Sequence"]</p>
    */
    @SerializedName("diffInfo")
    private List<String> diffInfo;

    public String getCategoryNameOrigin() {
        return categoryNameOrigin;
    }
    public void setCategoryNameOrigin(String categoryNameOrigin) {
        this.categoryNameOrigin = categoryNameOrigin;
    }
    public String getCategoryDescription() {
        return categoryDescription;
    }
    public void setCategoryDescription(String categoryDescription) {
        this.categoryDescription = categoryDescription;
    }
    public Integer getSequence() {
        return sequence;
    }
    public void setSequence(Integer sequence) {
        this.sequence = sequence;
    }
    public String getCategoryName() {
        return categoryName;
    }
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
    public Integer getTopFlag() {
        return topFlag;
    }
    public void setTopFlag(Integer topFlag) {
        this.topFlag = topFlag;
    }
    public Integer getCategoryMode() {
        return categoryMode;
    }
    public void setCategoryMode(Integer categoryMode) {
        this.categoryMode = categoryMode;
    }
    public String getTimeZone() {
        return timeZone;
    }
    public void setTimeZone(String timeZone) {
        this.timeZone = timeZone;
    }
    public String getMarketplaceId() {
        return marketplaceId;
    }
    public void setMarketplaceId(String marketplaceId) {
        this.marketplaceId = marketplaceId;
    }
    public Integer getSellSceneType() {
        return sellSceneType;
    }
    public void setSellSceneType(Integer sellSceneType) {
        this.sellSceneType = sellSceneType;
    }
    public List<String> getDiffInfo() {
        return diffInfo;
    }
    public void setDiffInfo(List<String> diffInfo) {
        this.diffInfo = diffInfo;
    }


    @Override
    public MeituanResponse<String> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<String>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "FoodCatUpdateRequest{" + "categoryNameOrigin=" + categoryNameOrigin + "," + "categoryDescription=" + categoryDescription + "," + "sequence=" + sequence + "," + "categoryName=" + categoryName + "," + "topFlag=" + topFlag + "," + "categoryMode=" + categoryMode + "," + "timeZone=" + timeZone + "," + "marketplaceId=" + marketplaceId + "," + "sellSceneType=" + sellSceneType + "," + "diffInfo=" + diffInfo + "}";
    }
}
